perm filename MIXS.FAI[TMP,LCS] blob
sn#170772 filedate 1975-07-31 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00008 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 TITLE MIXER
C00004 00003 GRAT: CLRBFI
C00006 00004 DLAY: PUSHJ P,IN1
C00008 00005 IN1: IN 11,
C00010 00006 DONE: PUSHJ P,OBUF
C00012 00007 GETNAM: MOVEI A,
C00013 00008 INNUM: SETZ
C00015 ENDMK
C⊗;
TITLE MIXER
ENTRY MIXER
EXTERN GETNUM,GTNUM2,PNUM
A←1 ↔ B←2 ↔ C←3 ↔ D←4 ↔ E←5
F←6 ↔ DUR←7 ↔ MAX←10 ↔ S←11
R1←12 ↔ R2←13 ↔ P←17 ↔ NBUFS←←4
DEFINE FIXX(N)
< JUMPGE N,.+5
MOVNS N
FIX N,233000
MOVNS N
CAIA
FIX N,233000 >
DEFINE FLOAT(N)
< TLC N,232000
FADR N,N >
MIXER: 0
MOVE P,[IOWD 20,PDL]
CLRBFI
OUTSTR [ASCIZ/
TYPE NAME 1: /]
SETZ F,
PUSHJ P,GNAME
OPEN 11,[14↔'DSK '↔BUF1]
JRST 4,.
INBUF 11,NBUFS
LOOKUP 11,FILNAM
JRST MIXER
AOJ F,
SECOND: CLRBFI
OUTSTR [ASCIZ/ TYPE NAME 2: /]
PUSHJ P,GNAME
OPEN 2,[14↔'DSK '↔BUF2]
JRST 4,.
INBUF 2,NBUFS
LOOKUP 2,FILNAM
JRST SECOND
AOJ F,
CLRBFI
OUTSTR [ASCIZ/ DELAY TIME = /]
JSA 16,GETNUM
SNUM2#
CLRBFI
OUTSTR [ASCIZ/ SRATE = /]
INCHWL A
PUSHJ P,INNUM
SKIPN
HRRZI =10000
FLOAT(0)
MOVEM FSRATE#
FMPR SNUM2
FIXX(0)
MOVEM SNUM2
GRAT: CLRBFI
SETZ S,
OUTSTR [ASCIZ/ RATIO ( FIRST:SECOND ) = /]
JSA 16,GTNUM2
RA1#
RA2#
SKIPG R1,RA1
MOVE R1,[1.]
FMPR R1,[=4096.]
FIXX(R1)
SKIPG R2,RA2
MOVE R2,[1.]
FMPR R2,[=4096.]
FIXX(R2)
ONAME: CLRBFI
OUTSTR [ASCIZ/ OUTPUT NAME : /]
PUSHJ P,GNAME
OPEN [14↔'DSK '↔BUF3,,0]
JRST 4,.
OUTBUF NBUFS
ENTER FILNAM
JRST ONAME
PUSHJ P,OBUF+1
SETZM EOF1#
SETZM EOF2#
SETZ DUR,
SETZ MAX,
PUSHJ P,IN2
AOS BUF2+2
SETOM DFLG#
DLAY: PUSHJ P,IN1
ADD DUR,F
CAML DUR,SNUM2
JRST FIND
PUSHJ P,MOV
JRST DLAY
MOV: ILDB D,A
TDON D,[NEG: 777777774000]
LDB D,A
IMUL D,R1
ASH D,-15
CAMLE D,MAX
MOVE MAX,D
IDPB D,C
SOSG BUF3+2
PUSHJ P,OBUF
SOJG F,MOV
POPJ P,
EQBUF: PUSHJ P,IN1
JRST SETFLG
FIND: SOS BUF2+2
SUB DUR,SNUM2
SKIPG F,DUR
JRST EQBUF
EXCH F,BUF1+2
SUB F,BUF1+2
PUSHJ P,MOV
SETFLG: SETZM DFLG
MOVE DUR,SNUM2
MIX: ILDB D,A
TDON D,NEG
LDB D,A
ILDB E,B
TDON E,NEG
LDB E,B
IMUL D,R1
IMUL E,R2
ADD D,E
ASH D,-15
CAMLE D,MAX
MOVE MAX,D
IDPB D,C
AOJ DUR,
SOSG BUF3+2
PUSHJ P,OBUF
SOSG BUF1+2
PUSHJ P,IN1
SOSG BUF2+2
PUSHJ P,IN2
JRST MIX
IN1: IN 11,
CAIA
JRST CKEOF
HRRZI F,3
IMULB F,BUF1+2
HRRZ A,BUF1+1
HRLI A,1400
POPJ P,
CKEOF: STATO 11,20000
JRST 4,.
SETOM EOF1
SKIPGE EOF2
JRST DONE
SKIPGE DFLG
JRST BREAK
PART2: MOVE R1,R2
SOSG F,BUF2+2
PUSHJ P,IN2
ADD DUR,F
MOVE A,B
PUSHJ P,MOV
JRST .-4
BREAK: SETZ D,
IDPB D,C
AOJ DUR,
SOSG BUF3+2
PUSHJ P,OBUF
CAMGE DUR,SNUM2
JRST BREAK+1
JRST PART2
IN2: IN 2,
CAIA
JRST CKEOF2
HRRZI F,3
IMULB F,BUF2+2
HRRZ B,BUF2+1
HRLI B,1400
POPJ P,
CKEOF2: STATO 2,20000
JRST 4,.
SETOM EOF2
SKIPGE EOF1
JRST DONE
HRRZ F,BUF1+2
ADD DUR,F
PUSHJ P,MOV
PUSHJ P,IN1
JRST .-3
OBUF: HRRM C,BUF3+1
OUT
CAIA
JRST 4,.
BPO3: HRRZI C,3
IMULB C,BUF3+2
HRRZ C,BUF3+1
HRLI C,1400
POPJ P,
DONE: PUSHJ P,OBUF
RELEAS
OUTSTR [ASCIZ/
MAX AMPL = /]
MOVE MAX
PUSHJ P,OUTINT
OUTSTR [ASCIZ/
NUMBER OF SAMPLES = /]
MOVE DUR
PUSHJ P,OUTINT
OUTSTR [064220,,0]
MOVE DUR
FLOAT(0)
FDVRM FSRATE
JSA 16,PNUM
FSRATE
EXIT
NAME: 'MUSIC '
'MUSAA '
'MUSIC '
EXT: 'MUS '
'DMD '
'MUS '
GNAME: SETZM FILEXT+1
SETZM FILPPN
MOVE A,EXT(F)
MOVEM A,FILEXT
PUSHJ P,GETNAM
SKIPN A
MOVE A,NAME(F)
MOVEM A,FILNAM
CAIE C,"."
JRST NOEXTN
PUSHJ P,GETNAM
MOVEM A,FILEXT
NOEXTN: CAIE C,"["
JRST FFDX
PUSHJ P,GETP
HRLZM A,FILPPN
PUSHJ P,GETP
HRRM A,FILPPN
FFDX: INCHRW C
CAIE C,12
JRST FFDX
POPJ P,
GETNAM: MOVEI A,
MOVE B,[440600,,A]
GETNML: PUSHJ P,RCH
POPJ P,
SUBI C,40
TLNE B,770000
IDPB C,B
JRST GETNML
GETP: MOVEI A,
GETPL: PUSHJ P,RCH
POPJ P,
TRNE A,770000
JRST GETPL
LSH A,6
ADDI A,-40(C)
JRST GETPL
RCH: INCHWL C
CAIN C,42
JRST RCHQ
CAIE C,11
CAIN C," "
JRST RCH
CAIE C,"."
CAIN C,","
POPJ P,
CAIE C,"["
CAIN C,"]"
POPJ P,
RCHQR: CAIGE C,40
POPJ P,
CAIL C,"a"
CAILE C,"z"
CAIA
SUBI C,40
POPJ1: AOS (P)
POPJ P,
RCHQ: INCHWL C
JRST RCHQR
INNUM: SETZ
CAIL A,60
CAILE A,71
POPJ P,
IMULI =10
ADDI -60(A)
GTCHR: INCHRS A
POPJ P,
JRST INNUM+1
OUTINT: HRRZI B,7
JUMPE OUTZ
IDIVI =10
ADDI A,60
HRRZM A,BLK(B)
SOJGE B,OUTINT+1
OCHR: OUTCHR BLK+1(B)
CAIGE B,6
AOJA B,OCHR
POPJ P,
OUTZ: CAIL B,7
HRLZI B,300000
JRST OCHR
FILNAM: 0
FILEXT: 0
0
FILPPN: 0
BUF1: BLOCK 3
BUF2: BLOCK 3
BUF3: BLOCK 3
PDL: BLOCK 44
BLK: BLOCK 10
END